package com.idp.web.service;

import com.idp.common.base.BaseResult;
import com.idp.common.persistence.Page;
import com.idp.web.dto.NurseDTO;
import com.idp.web.dto.NurseListDTO;
import com.idp.web.dto.NurseShowDTO;
import com.idp.web.entity.Nurse;
import com.idp.web.vo.NurseSearchVo;

import java.util.List;

/**
 * 护士service接口
 *
 * @author xubinren
 * @version 1.0
 * @date 2018/3/1
 */
public interface INurseService {

    /**
     * 根据条件分页查询医生列表
     *
     * @param nurseSearchVo 查询信息
     * @param page  分页信息
     * @return Page<NurseListDTO>
     */
    Page<NurseListDTO> findByPage(NurseSearchVo nurseSearchVo, Page<NurseListDTO> page);

    /**
     * 根据条件查询医生列表
     *
     * @param nurse 查询条件
     * @return List<Nurse>
     */
    List<Nurse> findBySearch(Nurse nurse);

    /**
     * 通过ID查询
     *
     * @param id 主键id
     * @return Nurse
     */
    Nurse getById(String id);

    /**
     * 通过ID查询护士信息
     *
     * @param id 主键id
     * @return NurseShowDTO
     */
    NurseShowDTO getNurseById(String id);

    /**
     * 编辑页面初始化
     *
     * @param id 主键id
     * @return NurseDTO
     */
    NurseDTO getNurseForEdit(String id);

    /**
     * 新增
     *
     * @param nurse 护士信息
     * @param userId 用户id
     */
    BaseResult add(Nurse nurse,Integer userType, String userId);

    /**
     * 修改
     *
     * @param nurse 护士信息
     * @param userId 用户id
     * @param userType 账户类型：1、管理员,2、医院，3、护士，4、医生
     */
    BaseResult update(Nurse nurse, String userId,int userType);

    /**
     * 审核
     *
     * @param nurse 护士信息
     * @param userId 用户id
     */
    BaseResult audit(Nurse nurse, String userId);

    /**
     * 根据主键id删除护士信息
     *
     * @param id 护士id
     */
    void delete(String id);

    /**
     * 查询护士的统计信息
     *
     * @param nurseSearchVo 查询条件
     * @return int
     */
    int queryStatistics(NurseSearchVo nurseSearchVo);
}
